<?php
/**
 * Created by PhpStorm.
 * User: wangkxin@foxmail.com
 * Date: 2022/5/6
 * Time: 15:52
 */

namespace app\index\controller;

use app\BaseController;
use app\Request;
use think\facade\View;
use think\facade\Config;
use OSS\OssClient;
use OSS\Core\OssException;
use think\Image;

class Uploadoss extends BaseController
{

    public function index()
    {
        return View::fetch('up');
    }


    public function up_image(Request $request)
    {
        /**
         * 看到有很多人在上传的 时候现实移动到本地文件,然后上传到阿里云
         *大家都知道磁盘IO吧(I是input 输入) O(output 输出)
         *大量的删除文件写入文件对服务器也是有影响的
         */
        if ($this->request->method() == 'POST') {
            $file = $request->file('file');  //获取到上传的文件
            $filepath = $file->getPathname() ;
            $resResult = Image::open($file);  //获取打开图片的信息，包括图像大小、类型等
            // 尝试执行
            try {
                $config = Config::get('aliyun_oss'); //获取Oss的配置

                //实例化对象 将配置传入
                $ossClient = new OssClient($config['KeyId'], $config['KeySecret'], $config['Endpoint']);

                //这里是有sha1加密 生成文件名 之后连接上后缀
                $fileName = sha1(date('YmdHis', time()) . uniqid()) . '.' . $resResult->type();
                //执行阿里云上传
                $result = $ossClient->uploadFile($config['Bucket'], 'backend/'.date('Ymd').'/'.$fileName, $filepath);
                /**
                 * 这个只是为了展示
                 * 可以删除或者保留下做后面的操作
                 */
                $arr = [
                    '图片地址:' => $result['info']['url'],
                    '数据库保存名称' => $fileName
                ];
            } catch (OssException $e) {
                return $e->getMessage();
            }
            //将结果输出
            dump($arr);
        }

    }
}